short="${long:0:2}";echo"${sho" />
如何提取字符串的前两个字符(Shell脚本)? | 您所在的位置:网站首页 › shell 脚本截取字符串 › 如何提取字符串的前两个字符(Shell脚本)? |
可能最有效的方法是,如果你使用bashshell(并且您似乎基于您的注释),则使用参数扩展的子字符串变体: pax> long="USCAGol.blah.blah.blah" pax> short="${long:0:2}" ; echo "${short}" US这将short成为前两个字符long。如果long少于两个字符,short则与其相同。 如果你还想确保最短的长度,你可以用类似的方式将它放在手边: pax> long="A" pax> tmpstr="${long}.." pax> short="${tmpstr:0:2}" ; echo "${short}" A.这可以确保长度小于两个字符的任何内容都可以用句点填充(或者其他方法,只需更改创建时使用的字符tmpstr)即可。目前还不清楚你是否需要这个,但我认为我会为了完整而加入。 说了这么多,有很多方法可以用外部程序来做到这一点(例如,如果你没有bash提供给你),其中一些方法是: short=$(echo "${long}" | cut -c1-2) short=$(echo "${long}" | head -c2) short=$(echo "${long}" | awk '{print substr ($0, 0, 2)}' short=$(echo "${long}" | sed 's/^\(..\).*/\1/')前两个(cut和head)对于单行字符串是相同的 - 他们基本上都会让你回到前两个字符。它们的不同之处在于它cut会给出每行的前两个字符,并head会给出整个输入的前两个字符 第三个使用awk子字符串函数提取前两个字符,第四个使用sed捕获组(使用()和\1)捕获前两个字符并用它们替换整个行。它们都相似cut- 它们提供输入中每行的前两个字符。 如果你确定你的输入是单行的,那么这些都不重要,它们都具有相同的效果。 |
CopyRight 2018-2019 实验室设备网 版权所有 |